﻿Imports System.Data
Imports VSModel
Imports Cls_Common
Imports SecurityService

Partial Class Control_TiepNhan_ContentEditor
    Inherits System.Web.UI.UserControl
    Private Shared ReadOnly log As log4net.ILog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)
#Region "Sub and Function "
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not IsPostBack Then
            setPermission()

            If Not Request.QueryString("Certifiedid") Is Nothing Then
                hidID.Value = Request.QueryString("Certifiedid")


                'Load list action status
                LoadListAction(hidID.Value)
                setPermission()
                'btnDelete.Visible = HasPermission(Function_Name.CertifiedHousehold, Session("RoleID"), 0, Audit_Type.Delete)
                btnDelete.Attributes.Add("onclick", "return ComfirmDialog('Bạn có chắc chắn muốn xóa không?',0,'" + btnDelete.ClientID + "','" + hidID.Value.ToString + "',1);")
            End If


            'active tab tuong ung voi Page
            'InVisble button ko can thiet
            If Request.PhysicalPath.Contains("List.aspx") Then
                lbtList.CssClass = "current_manage"
                lbtList.Text = "<span class='current_manage'>Danh sách</span>"
                lbtEdit.Visible = False
                lbtView.Visible = False
                btnDelete.Visible = False
                'Chi ap dung cho du lieu xuat ban
                tabs_state.Visible = False
                cboAction.Visible = False
                lbtInPhieu.Visible = False
                'Permission
            ElseIf Request.PhysicalPath.Contains("Create.aspx") Or Request.PhysicalPath.Contains("CapDoi.aspx") Or Request.PhysicalPath.Contains("CapMoi.aspx") Or Request.PhysicalPath.Contains("CapLai.aspx") Then
                lbtAdd.CssClass = "current_manage"
                lbtAdd.Text = "<span class='current_manage'>Thêm mới</span>"
                lbtEdit.Visible = False
                lbtView.Visible = False
                btnDelete.Visible = False
                'Chi ap dung cho du lieu xuat ban
                tabs_state.Visible = False
                cboAction.Visible = False
                lbtInPhieu.Visible = False

            ElseIf Request.PhysicalPath.Contains("Detail.aspx") Then
                lbtView.CssClass = "current_manage"
                lbtView.Text = "<span class='current_manage'>Xem</span>"

            ElseIf Request.PhysicalPath.Contains("Edit.aspx") Then
                lbtEdit.CssClass = "current_manage"
                lbtEdit.Text = "<span class='current_manage'>Sửa</span>"

            ElseIf Request.PhysicalPath.Contains("ImportFromExcel.aspx") Then
                lbtImport.CssClass = "current_manage"
                lbtImport.Text = "<span class='current_manage'>Import excel file</span>"
                lbtEdit.Visible = False
                lbtView.Visible = False
                btnDelete.Visible = False
                'Chi ap dung cho du lieu xuat ban
                tabs_state.Visible = False
                cboAction.Visible = False
            End If

            lbtInPhieu.Attributes.Add("onclick", "return OpenInPhieu('InBienNhan.aspx?Certifiedid=" & hidID.Value + "')")
        End If
    End Sub
    Protected Sub setPermission()
        'Se bat lai khi dua chuc nang phan quyen
        lbtAdd.Visible = HasPermission(Function_Name.CertifiedHousehold, Session("RoleID"), hidStatusId.value, Audit_Type.Create)
        lbtView.Visible = HasPermission(Function_Name.CertifiedHousehold, Session("RoleID"), hidStatusId.value, Audit_Type.ViewContent)
        lbtEdit.Visible = HasPermission(Function_Name.CertifiedHousehold, Session("RoleID"), hidStatusId.value, Audit_Type.Edit)
        btnDelete.Visible = HasPermission(Function_Name.CertifiedHousehold, Session("RoleID"), hidStatusId.Value, Audit_Type.Delete)
        lbtInPhieu.Visible = HasPermission(Function_Name.CertifiedHousehold, Session("RoleID"), 1, Audit_Type.Create)

    End Sub
    Protected Sub lbtList_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lbtList.Click
        Response.Redirect("List.aspx")
    End Sub
    Protected Sub lbtAdd_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lbtAdd.Click
        Response.Redirect("Create.aspx")
    End Sub
    Protected Sub lbtEdit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lbtEdit.Click
        Response.Redirect("Edit.aspx?Certifiedid=" & hidID.Value & "")
    End Sub
    Protected Sub lbtView_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lbtView.Click
        Response.Redirect("Detail.aspx?Certifiedid=" & hidID.Value & "")
    End Sub
    Protected Sub lbtImport_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lbtImport.Click
        Response.Redirect("ImportFromExcel.aspx", True)
    End Sub
    Protected Sub lbtInPhieu_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lbtInPhieu.Click

        Response.Redirect("InBienNhan.aspx?Certifiedid=" & hidID.Value & "")
    End Sub
    Protected Sub lnkbtnDelete_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnDelete.Click
        Dim intId As Integer
        Dim strLogName As String = ""
        Using data As New VSEntities
            intId = hidID.Value
            Dim q = (From p In data.CertifiedHouseholds Where p.CertifiedID = intId Select p).FirstOrDefault
            'địa chỉ hồ sơ
            Dim CerAddress = (From p In data.CertifiedHouseholdAddresses Where p.CertifiedID = intId Select p.Id).ToList()
            For Each _iAddress As Integer In CerAddress
                Dim _CerAddressId = (From p In data.CertifiedHouseholdAddresses Where p.Id = _iAddress Select p).FirstOrDefault
                data.CertifiedHouseholdAddresses.DeleteObject(_CerAddressId)
            Next
            'thành phần hồ sơ
            Dim CerThanhPhanHoSo = (From p In data.CertifiedHouseholdThanhPhanHoSoes Where p.CertifiedID = intId Select p.Id).ToList()
            For Each _iThanhPhanHoSo As Integer In CerThanhPhanHoSo
                Dim _CerThanhPhanHoSo = (From p In data.CertifiedHouseholdThanhPhanHoSoes Where p.Id = _iThanhPhanHoSo Select p).FirstOrDefault
                data.CertifiedHouseholdThanhPhanHoSoes.DeleteObject(_CerThanhPhanHoSo)
            Next
            'chi tiết ngành nghề
            Dim CerNganhNghe = (From p In data.CertifiedHouseholdNganhNghes Where p.CertifiedID = intId Select p.Id).ToList()
            For Each _iNganhNghe As Integer In CerNganhNghe
                Dim _CerNganhNghe = (From p In data.CertifiedHouseholdNganhNghes Where p.Id = _iNganhNghe Select p).FirstOrDefault
                data.CertifiedHouseholdNganhNghes.DeleteObject(_CerNganhNghe)
            Next
            Try
                data.CertifiedHouseholds.DeleteObject(q)
                Dim strGCN As String = ""
                If Not q.CertifiedCode Is Nothing Then
                    strGCN = q.CertifiedCode
                End If
                Dim strLog As String = "Giay CN:" & strGCN & ", tên hộ: " & q.Biz_VietName & ", nguoi dai dien: " & q.Ow_Name & ", CMND: " & q.Ow_CardID _
                                       & ", địa chỉ kinh doanh: " & q.Biz_HeadOffice
                Insert_App_Log("Xóa  Certified:" & strLog & "", Function_Name.CertifiedHousehold, Audit_Type.Delete, Request.ServerVariables("REMOTE_ADDR"), Session("UserName"))
                data.SaveChanges()
                Excute_Javascript("Alertbox('Xóa dữ liệu thành công.');window.location ='../../Page/TiepNhan/List.aspx';", Me.Page, True)
            Catch ex As Exception
                log4net.Config.XmlConfigurator.Configure()
                log.Error("Error error " & AddTabSpace(1) & Session("Username") & AddTabSpace(1) & "IP:" & GetIPAddress(), ex)
                Excute_Javascript("Alertbox('Xóa thất bại.');", Me.Page, True)
            End Try
        End Using
    End Sub
    'Chi dung cho du lieu xuat ban
    'Load list action status of current status
    
    Protected Sub LoadListAction(ByVal iCertifiedHouseholdId As Integer)
        Using Data As New VSEntities
            ' kiem tra xem ho so co thuoc huyen cua user dang log hay ko?
            Dim _curHuyenId As Integer = Session("HuyenId")
            'Get Current StatusId of object
            Dim cst = (From q In Data.CertifiedHouseholds Where q.CertifiedID = iCertifiedHouseholdId And q.ProvinceId = _curHuyenId Select q).FirstOrDefault
            If Not cst Is Nothing Then
                hidStatusId.Value = cst.StatusId
                Dim iCurrentStatusId As Byte = cst.StatusId
                'Load action tuong ung voi current statusid
                Dim st = (From q In Data.StatusActions Where q.CurrentStatusId = iCurrentStatusId And q.FunctionId = Function_Name.CertifiedHousehold Select q Order By
                         q.ActionId, q.Action.Title, q.Action.AuditNumber).ToList()
                For Each i In st
                    If HasPermission(Function_Name.CertifiedHousehold, Session("RoleID"), i.CurrentStatusId, i.Action.AuditNumber) Then
                        Dim _item As New ListItem("---" & i.Action.Title, i.ActionId)
                        cboAction.Items.Insert(0, _item)
                    End If
                Next
                Dim _status = (From q In Data.Status Where q.StatusId = iCurrentStatusId And q.FunctionId = Function_Name.CertifiedHousehold).FirstOrDefault
                If Not _status Is Nothing Then
                    Dim lstItem As New ListItem(_status.Title, "")
                    cboAction.Items.Insert(0, lstItem)
                    cboAction.SelectedIndex = -1
                End If
            Else
                Response.Redirect("List.aspx")
            End If
           
        End Using
    End Sub

    'Chi dung cho du lieu xuat ban
    Protected Sub cboAction_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cboAction.SelectedIndexChanged
        'Nếu trạng thái đang chọn khác với trạng thái ban đầu thì mới đi chuyển trạng thái
        If (cboAction.SelectedValue <> cboAction.Items(0).Value) Then
            Response.Redirect("Action.aspx?Certifiedid=" & hidID.Value & "&Actionid=" & cboAction.SelectedValue)
        End If
    End Sub
#End Region

    
End Class
